package cc.rengu.redp.bizimpl.upmp.service.impl;

import cc.rengu.redp.bizimpl.upmp.domain.UpmpSysSeq;
import cc.rengu.redp.bizimpl.upmp.dao.UpmpSysSeqMapper;
import cc.rengu.redp.bizimpl.upmp.service.IUpmpSysParamService;
import cc.rengu.redp.bizimpl.upmp.service.IUpmpSysSeqService;
import cc.rengu.redp.bizimpl.upmp.vo.UpmpUserInfoVO;
import cc.rengu.redp.bizimpl.utils.CommonUtils;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author System
 */
@Service("upmpSysSeqService")
@DS("upmp")
public class UpmpSysSeqServiceImpl extends ServiceImpl<UpmpSysSeqMapper, UpmpSysSeq> implements IUpmpSysSeqService {
    @Autowired
    private IUpmpSysParamService upmpSysParamService;

    /**
     * 生成序列号
     *
     * @param code
     * @param subCode
     * @param channelId
     * @return
     */
    @Override
    public String updateParamValue(String code, String subCode, String channelId) {

        LambdaQueryWrapper<UpmpSysSeq> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(UpmpSysSeq::getSeqCode, code);
        wrapper.eq(UpmpSysSeq::getSeqSubCode, subCode);
        UpmpSysSeq params = this.getOne(wrapper);
        if (params == null) {
            params = new UpmpSysSeq();
            // 获取当前登录用户信息
            // 获取当前登录用户信息
            UpmpUserInfoVO user = CommonUtils.getCurrentUser(upmpSysParamService);
            params.setInstId(user.getInstId());
            params.setSeqCode(code);
            params.setSeqSubCode(subCode);
            params.setSeqValue("1");
            this.save(params);
        } else {
            Long valueLong = Long.parseLong(params.getSeqValue()) + 1;
            params.setSeqValue(valueLong.toString());
            this.updateById(params);
        }
        return params.getSeqValue();
    }

}
